package com.linfeng.component.mybatisplus.entity;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.linfeng.component.mybatisplus.event.cmd.CreateCmd;
import com.linfeng.component.mybatisplus.event.cmd.UpdateCmd;
import com.linfeng.component.mybatisplus.event.qry.PageQry;
import com.linfeng.component.mybatisplus.event.qry.Qry;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

public interface IEntity<D, P> {

    <Q extends PageQry> IPage<D> page(Q q);

    D getById(Serializable id);

    D getOne(QueryWrapper<P> queryWrapper);

    D getOne(Map<String, Object> queryMap);

    List<D> list();

    List<D> list(Map<String, Object> map);

    <Q extends Qry> List<D> list(Q q);

    List<D> list(QueryWrapper<P> queryWrapper);

    <C extends CreateCmd> boolean create(C cmd);

    <C extends UpdateCmd> boolean update(C cmd);
}
